import { createStore, combineReducers, applyMiddleware } from 'redux'
// 这个用于启动redux-devtools  便于浏览器redux工具的配合
// 参考网址 https://www.npmjs.com/package/redux-devtools-extension
import { composeWithDevTools } from 'redux-devtools-extension'
// 1. 导入创建saga中间件的函数
import createSagaMiddleware from 'redux-saga'
// 2. 导入对应的generator函数
import { userSaga } from '../sagas/userSaga'
import { user } from './reducers/user'
// 导入redux数据持久化的依赖  但是我们这里并不需要数据持久化
// import { persistStore, persistReducer } from 'redux-persist'
// import storage from 'redux-persist/lib/storage'

// 存储对象  redux数据持久化
// const persistConfig = {
//   key: 'root',
//   storage
// }

// 注意使用saga的步骤
// 3. 创建saga中间件
const sagaMiddleware = createSagaMiddleware()

// 创建数据持久化的reducer
// const persistedReducer = persistReducer(persistConfig, combineReducers({
//   user
// }))

// 4. 使用saga中间件  注意redux-devtools同时还需要监听中间件 所以这里使用这个函数composeWithDevTools包裹中间件
const enhancer = composeWithDevTools(applyMiddleware(sagaMiddleware))

// 创建store
// const store = createStore(persistedReducer, enhancer)
const store = createStore(combineReducers({ user }), enhancer)

// 应用redux-persist以完成数据持久化
// const persistor = persistStore(store)

// 5. 使用generator函数
sagaMiddleware.run(userSaga)

// export {
//   persistor,
//   store
// }

export default store
